package com.jvyou.pms.service.impl;

import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jvyou.common.response.Page;
import com.jvyou.pms.domain.dto.SysDictDataDto;
import com.jvyou.pms.domain.entity.SysDictData;
import com.jvyou.pms.mapper.SysDictDataMapper;
import com.jvyou.pms.service.SysDictDataService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * 字典数据表(SysDictData)表服务实现类
 *
 * @author 橘柚
 * @since 2025-06-29 02:14:12
 */
@RequiredArgsConstructor
@Service("sysDictDataService")
public class SysDictDataServiceImpl extends ServiceImpl<SysDictDataMapper, SysDictData> implements SysDictDataService {

    /**
     * 构建查询条件包装器
     *
     * @param dto 查询参数
     * @return QueryWrapper
     */
    private LambdaQueryWrapper<SysDictData> getWrapper(SysDictDataDto dto) {
        LambdaQueryWrapper<SysDictData> ew = new LambdaQueryWrapper<>();
        ew.eq(StrUtil.isNotBlank(dto.getDictType()), SysDictData::getDictType, dto.getDictType());
        ew.eq(StrUtil.isNotBlank(dto.getDictLabel()), SysDictData::getDictLabel, dto.getDictLabel());
        ew.eq(StrUtil.isNotBlank(dto.getDictValue()), SysDictData::getDictValue, dto.getDictValue());
        ew.eq(StrUtil.isNotBlank(dto.getStatus()), SysDictData::getStatus, dto.getStatus());
        return ew;
    }

    @Override
    public List<SysDictData> listSysDictData(SysDictDataDto dto) {
        return list(getWrapper(dto));
    }

    @Override
    public Page<SysDictData> pageSysDictData(SysDictDataDto dto) {
        IPage<SysDictData> page = dto.toPage();
        page = page(page, getWrapper(dto));
        return Page.convert(page);
    }

}
